草庐IT

c++ - AfxLoadLibrary 与 LoadLibrary

全部标签

C Windows 缓冲区大小

假设我在Windows中使用recv函数从套接字接收数据。我很好奇最佳缓冲区有多大?我可以将其设置为1024字节,也可以将其设置为51200字节或更大。我想知道哪个对性能更好。这不仅适用于recv函数,假设我正在读取一个大文本文件,我需要一个非常大的缓冲区还是一个较小的缓冲区? 最佳答案 操作系统执行自己的缓冲,因此缓冲区的大小并不重要。性能损失在于函数调用:1字节缓冲区将是低效的,因为它需要对recv()的调用太多。缓冲区太大只是浪费空间。最佳大小大约是您希望在单个recv()调用中接收或处理的数据大小的两倍,下限约为1或2tcp

c - 在 Windows 上为 stdlib.h 函数包含什么库?

我来自Mac世界,对Windows开发还很陌生。非常简单的问题:我需要在VisualStudio2010中包含哪些库才能访问一些基本函数,如strtof()或snprintf()?获取这些链接器错误...#including,, 最佳答案 MSVC不支持C99,只支持C标准的老版本。snprintf和strtof是在C99中添加的,因此不可用。 关于c-在Windows上为stdlib.h函数包含什么库?,我们在StackOverflow上找到一个类似的问题:

c - 适用于 Windows 的 MALLOC_TRACE

在我们公司,我们有一个类似于mtrace的内部框架glibc中用于检测内存泄漏的(MALLOC_TRACE)功能。这个框架是为在Windows上运行而编写的,但它在GNU/Linux上运行得不是很好。那么,有人知道可以在Windows、GNU/Linux甚至MacOSX上运行的与mtrace(MALLOC_TRACE)等效的可移植版本吗? 最佳答案 你试过dmalloc吗?http://dmalloc.com/也许我认为在linux上valgrind要好得多 关于c-适用于Windows

c - 如何使用 Windows 和 C 从 URL 获取数据?

在用户的网络浏览器中打开URL非常简单:ShellExecuteA(NULL,"open",url,NULL,NULL,SW_SHOWNORMAL);我应该调用什么来使用给定的URL从网站检索数据?在Mac上,我会使用:URLSimpleDownload(url,NULL,newDataH,0,NULL,NULL);它存储在newDataH中处理从url检索到的数据。很容易。在Windows上是否有等效项? 最佳答案 您可能正在寻找WinINet中的InternetReadFile函数.以下是该API中常用函数的一个很好的列表:Co

c++ - 如何为在 MS VC++ 中开发的 C++ 程序分配特定部分的代码

我正在尝试使用这段代码将一段代码分配给一个独立的部分:#ifdef_MSC_VER#pragmasection(".evil",execute)#pragmacode_seg(".evil")#endif#ifdef__GNUC__static__attribute__((section(".evil")))#elifdefined_MSC_VERstatic__declspec(allocate(".evil"))#endifvoid__invoke__start(){//...但这不起作用,编译器说The__declspec(allocate())syntaxcanbeusedfo

c - 如何将分钟添加到包含 UTC 时间的 struct tm?

set_time()函数应该获取特定时间并将指定的分钟数添加到该时间并将其保存在*t中。#include#includeenum{JAN,FEB,MAR,APR,MAY,JUNE,JULY,AUG,SEP,OCT,NOV,DEC};voidset_time(structtm*t,intyear,intmon,intday,inthour,intmin,intsec,intmins_to_add){/*Copyallthevalues.*/t->tm_year=(year-1900);t->tm_mon=mon;t->tm_mday=day;t->tm_hour=hour;t->tm_m

c - 将文本附加到编辑控件? (Windows API)

我用C语言创建了一个简单的窗体,并向其中添加了一些控件。但是对于编辑控件,我无法向其添加文本,就像列表框控件一样。我所能做的就是从编辑控件中获取文本,向其中添加所需的行,然后再次设置文本。这是我为完成这项工作而编写的代码。voidAddText(HWNDEditControl,char*NewData){intTextLen=GetWindowTextLength(EditControl);char*Result=malloc(TextLen+strlen(NewData)+1);if(Result==NULL)return;GetWindowText(EditControl,Resu

c - Win32 中的 TIB 访问

深入研究与TIB(线程信息block)一起工作的Win32API函数的实现,例如:TLS访问函数:TlsAlloc、TlsFree、TlsSetValue、TlsGetValueGetLastError,SetLastError消息子系统:GetMessage、PeekMessage等通过读取fs:[0x18]选择器的内容,我们发现它们都访问了TIB,有时称为TEB(线程环境block)。OTOH这是不必要的,因为fs寄存器直接指向它。根据thisarticle我在实践中看到的是,fs寄存器保存了TIB结构开头的地址,而在偏移量0x18处它有一个指向自身的指针。间接访问TIB的原因可能

c++ - 是否可以使用内存缓冲区(或 PE 资源)来支持只读 SQLite 数据库?

我想使用Windows的“自定义资源”功能将存储在SQLite数据库中的相当大的数据block嵌入到我的二进制文件中。(这是一个日志记录工具的白名单)SQLite确实支持inmemorydatabases,但看起来这可能仅限于创建全新的数据库;并且似乎不支持从内存缓冲区读取;但我并不肯定。数据库是否支持这样的东西?(由于其他原因我必须嵌入SQLite,所以将它用于白名单也很棒......) 最佳答案 sqlite文档在线备份部分http://www.sqlite.org/backup.html有一些代码可以做你想做的事(即将内存数据

无法使用 fopen 读取 UTF8 编码的文件(文件, "r,ccs=UTF-8")

在使用fopen打开文件时,我使用ccs=encoding(如MSDN中所述)将编码设置为UTF-8。当写入文件时它工作正常wchar_t*unicode_text=L"こんにちは";FILE*f=fopen("C:\\test.txt","w,ccs=UTF-8");fwprintf(f,L"%s\n",unicode_text);fclose(f);当我在文本编辑器中打开文件时,unicode会正常显示。但是当尝试从创建的文件中读取时,未检测到UTF-8编码:wchar_tbuffer[1000];FILE*f=fopen("C:\\test.txt","r,ccs=UTF-8")